[NSSCTF]Misc部分题复现

easy_rgb (montage拼图 gaps恢复顺序 AES加解密)

给了一个文件夹和一个有密码的压缩包 文件夹里面有180张小图 考虑用montage拼图后在用gaps拼成正确的图

使用montage

首先在kali中cd进小图所在的文件夹 将小图的总数分解 比如该题180张分为15*12(能分成正方形最好是正方形) 命令为:

montage *.png -tile 15x12 -geometry +0+0 flag.png

就可以在文件夹中找到这个拼接好的图片

image-20230403190412049

然后要用ps 修改图片的长宽为1:1 用较大的数值为边长 是图片为正方形 便于后续size参数的计算

然后是在kali中使用gaps 恢复正常图片

image-20230403190443685

命令为:python3 gaps –image=flag2.png –size=125 –save

size为正方形小图的边长 刚刚ps的时候改变了整体的长宽 注意此时的小正方形的边长也要发生改变

得到一个密码:NKCTF2023 用此密码打开刚刚的压缩包得到三个文档r.txt g.txt b.txt

将三个文档内容放在一起 竖着读(脑洞) 发现是压缩包结构

f_1=open('r.txt','r')
f_2=open('g.txt','r')
f_3=open('b.txt','r')
r1=f_1.read()
r2=f_2.read()
r3=f_3.read()
for i in range(0, len(r2)-1):
    print(r1[i] + r2[i] + r3[i], end='')
504b03041400000008003dba6a5654369fb2420000004000000008000000666c61672e747874f3740aa94cb32c48af0cb22c70760df20932f52bf52fc8f4f70b76370c8b2a28c92d0bf54ccf0fd40f0a712d08890a080b09374a3437b72cc87172f32c4bf6d30600504b010214001400000008003dba6a5654369fb24200000040000000080024000000000000002000000000000000666c61672e7478740a0020000000000001001800c4ecda7d6353d90185c557aa6553d9016a47568f6553d901504b050600000000010001005a0000006800000007004145532d3132

放在010editor里面 save为压缩包 解压得到一串字符

IBTyf9pgyR9pCERLR5NuOpiONSG1VZptmvUIgoQ/RTEpTZPVTW2a779plBFIvcN+

image-20230329092048534

提示是AES加密 不需要偏移量 猜测密钥就是刚刚的NKCTF2023

image-20230329093224178

:horse:NKCTF{603fcdfc-652b-40e4-90cf-f27c2edc2d9f}

easy_word(掩码爆破 lsb隐写)

先在给的压缩包中看到了注释 对密码信息进行了提示

image-20230329180648249

设置掩码进行爆破

https://blog.csdn.net/qq_42094992/article/details/102178981?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168008477816800213020232%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168008477816800213020232&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-102178981-null-null.142^v77^control_1,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E8%AE%BE%E7%BD%AE%E6%8E%A9%E7%A0%81%E8%BF%9B%E8%A1%8C%E7%88%86%E7%A0%B4&spm=1018.2226.3001.4187

(掩码设置可以看这篇)

image-20230329195352821

得到密码h4evOF90

打开了加密文档 但是并没有flag

image-20230329195747687

image-20230329195834107

binwalk分离一下 找到了一张图片 拿到key:Welcome_to_NKCTF

image-20230329195910240

放到stegsolve中看一下 发现不对劲 是lsb隐写

image-20230329205339042

image-20230329205458115

密码就是图片中的密码

得到flag:horse:NKCTF{dc0684dd-5a57-4d47-b9c0-debed0ef28b9}

first spam of rabbit year(与佛论禅 零宽隐写 rot13 rot47 rabbit加解密)

题目已经告诉我们了 这是一个垃圾邮件 翻到最底下 有一串社会主义核心价值观编码:

法治文明公正民主公正文明公正文明公正敬业法治自由文明富强友善爱国平等爱国友善敬业爱国爱国文明富强公正诚信和谐公正诚信平等法治公正公正平等

image-20230330135348531

解码为:rabbit 又 move

找到一个叫spammimic的网站 可以解密垃圾邮件spammimic - decoded

image-20230403190538577

image-20230330140145317

试了普通的与佛论禅发现领悟不了佛的真意 尝试是加密的与佛论禅 密码就是rabbit 得到一串字符

&‍‎‏auD5‏‍v'<)‏‍‌h‎‏{dF6C_*’Jrcqzrh&ZaF>g^‏‍‌Hr'}vuHZJB‎‏%~}_H5?gu‌‏‏;q‍‏‌)"<rA?{sH2{IfafKfu=6w_tip:47&13

放在厨子里面看一下 就看到有零宽隐写 在猫捉鱼铃网站上找到在线零宽解密工具

image-20230330192644150

EnoOoO1G为隐写信息 再刚刚得到的字符串中有tip:47&13 是指rot47和rot13

对零宽隐写的内容进行rot13解密

image-20230330193512665

得到RabBbB1T

在对字符串&auD5v'<)h{dF6C_*’Jrcqzrh&ZaF>g^Hr'}vuHZJB%~}_H5?gu;q)"<rA?{sH2{IfafKfu=6w进行rot47解码

image-20230330194602713

得到U‍‎‏2Fsd‏‍GVkX‏‍‌19‎‏L5uer0YVyC4BKC9U+2um18/‏‍‌wCVNGFw+yq‎‏TON0wdn8F‌‏‏jB‍‏‌XQkCpnLDwaLx727z7FleH进行rabbit解密 拿到flag

image-20230330200221581

NKCTF{H4Ppy_tH3_Y34r_0f_R4BbBbbbB1tTtTtT}

三体(bmp提取信息)

三体

开局一张bmp图片

from PIL import Image

def decode(im):
    width,height = im.size
    lst = []
    for y in range(height):
        for x in range(width):
            red,green,blue = im.getpixel((x,y))
            if(blue | green | red) == 0:
                break
            index = (green<<8) + blue
            lst.append(chr(index))
    return ''.join(lst)

if __name__=='__main__':

    all_text = decode(Image.open("三体.bmp","r"))
    with open ("decode.text","w",encoding = "utf-8") as f:
        f.write(all_text)

脚本直接提取

image-20230330202121371

NKCTF{3d77dc1a37b2d1ebf489c973f554ea10}

easy_music(openbuff软件 波形频谱隐写)

题目提示要有三个密码

用audacity打开

发现psdB:74208645

010editor打开在尾部发现psdC:01374890

image-20230331082234613

在前面的波形很像二进制 对应二进制数字是

01110000 01110011 01100100 01000001 00111010 00111000 00110011 00111001 00110111 00111001 00110011 00110110 00110111 

转为文本(注意为八位算一个字节)

得到psdA:83979367

要使用的软件就是openbuff

image-20230331084007521

:horse:NKCTF{52d446a51c6896af878f872e0d748118}

TH Master(游戏题 作弊器的使用)

游戏题 使用东方星莲船修改器 把分数改成200000000分就OK了

image-20230402121739812

在replay的th12_01.rpy文件中就可以找到flag

image-20230403190622943

:horse:NKCTF{U_R_re411y_g00d_At_p14ying_t0h0u}

easy_bmp(爆破出bmp文件的宽度 puzzlesolver工具的使用)

打开是一个有密码的压缩包和两张有问题的bmp

一张直接看出的高度有问题 修改一下得到key的前半段

image-20230403190650649

剩下一张bmp文件名是width提示要修改宽度 选择python脚本来进行爆破 在里面找出最清楚的一张

import struct

with open('width.bmp', 'rb') as f:
    data = f.read()
    width = struct.unpack('<i', data[18:22])[0]
    height = struct.unpack('<i', data[22:26])[0]

# 爆破 BMP 文件的宽度
for i in range(1000, 1500):
    f1 = open('bpout' + str(i) + '.bmp', 'wb')
    img = data[:18] + struct.pack('>i', i)[::-1] + data[22:]
    f1.write(img)
    f1.close()

bpout1404

组合起来就是key:BMP_Height_width_easy

打开是一张flag.bmp 看到前面图片里的”SAME”猜测也是宽高发生了变化 使用puzzlesolver工具进行处理

得到一张二维码

image-20230403190735178

用sharex扫描一下 得到flag

image-20230403190804825

:horse:NKCTF{eab1291e-9e37-4ff1-b76d-f1af63eaad43}

easypic(用图片做加密容器的密钥 近邻法缩放图片)

题目描述:出题人把flag偷偷藏在加密盘里面了,你知道怎么把它还原出来吗

附件为一张图片 在图片png文件尾后发现藏了东西 可以分离为一张图片和一个vc容器加密盘 密钥文件就是图片

image-20230403190827040

加密容器里面有一张图片

image-20230403190844383

隐隐约约可以看见背景图层还是一张图片 又在010editor看见flag.png文件尾有一个tip:566*566 所以用ps将图片尺寸改一下

image-20230403190909663

image-20230403190927078

得到flag:horse:NKCTF{49ce8740502743585c4a44404e62d8f9}